# codeing=utf-8

"""
@description:变量知识点练习
@author:zhangyanqing@
@date:2020-10-31
@version:python-3.7
"""

# Tuple（元组）与列表类似，可以包含多个元素，且元素类型可以不相同，书写时每两个元素之间也是用逗号分隔。
# 01与列表的不同之处在于：元组的所有元素都写在一对小括号“()”中，且元组中的元素不能修改。
# 02对于不包含任何元素的元组，即()， 03 称为空元组。
# 元组中元素的索引方式与列表中元素的索引方式完全相同。与列表相同，利用下标“[]”可以从已有元组中取出其
# 中部分元素形成一个新元组，其语法
# 格式为：t[beg:end]其中，t为元组，
# beg是要取出的部分元素在t中的起始下标，end是要取出的部分元素在t中的结束下标。省略beg，则表示从t中的第一个元素开始，
# 等价于t[0:end]；省略end，则表示要取出的部分元素从beg位置开始一直到最后一个元素（包括最后一个元素）；beg和end都省略则取出t中的所有元素。

t = (1, 2.5, 'test', 3+4j, True, [3,1.63], 5.3)
print(t[1:4]) #输出“(2.5, 'test', (3+4j))”
print(t[-3:-1]) #输出“(True, [3, 1.63])”
print(t[2:-1]) #输出“('test', (3+4j), True, [3, 1.63])”
print(t[:3]) #输出“(1, 2.5, 'test')”
print(t[-2:]) #输出“([3, 1.63], 5.3)”
print(t[:]) #输出“(1, 2.5, 'test', (3+4j), True, [3, 1.63], 5.3)”

a_tuple = (1, 2, 3, 43, 23, 0, 12, 2)
b_tuple = 2, 3, 5, 2, 8, 9, 20, 43, 3
c_tuple = ('google', 'baidu', 1, 2, 4)
d_tuple = "This a dog", "aa", 2, 3, 5
e_tuple = ()  # 空无组
# 使用index打印
for i in range(len(a_tuple)):
    print(a_tuple[i])

print("--------------------------------------------")

# 直接打印
for b in b_tuple:
    print(b)

print("--------------------------------------------")

for c in c_tuple:
    print(c)

print("--------------------------------------------")

for d in d_tuple:
    print(d)

print("--------------------------------------------")

print("a_tuple[0]:", a_tuple[0])
# index范围都是[)左闭右开区间
print("a_tuple[1:5]", a_tuple[1:5])

print("--------------------------------------------")

# 列表转无组
list1 = ['Google', 'Taobao', 'Runoob', 'Baidu']
t1 = tuple(list1)
t1
print("--------------------------------------------")
## 元组中的元素值是不允许修改的
## 元组可以连接
t2 = a_tuple + d_tuple
t2

print("--------------------------------------------")

## 元组删除
del t2
# t2 # 元组删除后再打印会报异常

print("--------------------------------------------")

## c_tuple[1]  - 读取第二个元素
print(c_tuple[1])

print("--------------------------------------------")

## c_tuple[-4]反向读取，读取倒数第四个元素
print(d_tuple[-4])

print("--------------------------------------------")

## b_tuple[1:]截取元素，从第二个开始后的所有元素
print(b_tuple[1:])

print("--------------------------------------------")

## max(a_tuple) 返回元组中元素最大值
print(max(a_tuple))

print("--------------------------------------------")

## min(a_tuple) 返回元组中元素最小值
print(min(a_tuple))